/**
 * 路由跳转拦截器，但是路径直接输入的第一个页面无法拦截，在App.vue里有写第一个页面拦截
 */
// 白名单
const whiteList = [
      '/', // 注意入口页必须直接写 '/'，测试下，不知道
      '/pages/index/index',
      '/pages/mall/mall',
      '/pages/login/login'
]
export default function() {
    const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
    // 用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
    list.forEach(item => {
        uni.addInterceptor(item, {
            invoke(e) {
                // 获取要跳转的页面路径（url去掉"?"和"?"后的参数）
                const url1 = e.url.split('?')[0]
                let url2 = ''
                url2 = encodeURIComponent(e.url)

                // 判断当前窗口是白名单，如果是则不重定向路由
                let pass
                if (whiteList) {
                    pass = whiteList.some((item: any) => {
                        // if (typeof (item) === 'object' && item.pattern) {
                        //   return item.pattern.test(url)
                        // }
                        return url1 === item
                    })
                }
                // console.log('pass:' + pass)
                // 不是白名单并且没有token
                if (!pass && (!uni.getStorageSync('token'))) {
                    // uni.showToast({
                    //     title: '请先登录',
                    //     icon: 'none'
                    // })
                    uni.navigateTo({
                        url: "/pages/login/login?url=" + url2
                    })
                    // uni.showModal({
                    //     showCancel: false,
                    //     title: '提示',
                    //     content:'请先登录2',
                    //     success: function (res1) {
                    //         uni.reLaunch({
                    //             url: "/pages/login/login?url=" + url
                    //         })
                    //         // if (res.confirm) {
                    //         // 	console.log('用户点击确定');
                    //         // } else if (res.cancel) {
                    //         // 	console.log('用户点击取消');
                    //         // }
                    //     }
                    // });
                    return false
                }
                // console.log(e)
                return e
            },
            fail(err) { // 失败回调拦截
                console.log(err)
            }
    })
  })
}